package com.itheima;

import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;

import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;


public class LearnJedis {

    /**
     * 在 Java 中操作 Redis
     * <p>
     * 介绍:
     * Redis 的 Java 客户端很多，官方推荐的有三种：
     * Jedis
     * Lettuce
     * Redisson
     * <p>
     * Spring 对 Redis 客户端进行了整合，提供了 Spring Data Redis，在Spring Boot项目中还提供了对应的Starter，即
     * spring-boot-starter-data-redis
     */

    /*
    Jedis的maven坐标：

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.8.0</version>
    </dependency>

    使用Jedis操作Redis的步骤：
     获取连接
      执行操作
       关闭连接
     */


    //使用Jedis操作Redis数据库(要先运行Redis数据库服务器)
    @Test
    public void learnJedis() {
        //1.获取连接
        Jedis jedis = new Jedis("localhost", 6379);//参数host是IP地址,参数port是端口号

        //2.执行具体操作(Jedis中的方法名称与Redis中原生命令一致)

        //添加string key的值
        jedis.set("username", "xiaoming");

        //获取string key的值
        String username = jedis.get("username");
        System.err.println(username);//xiaoming

        //删除string key
        System.err.println(jedis.del("username"));//1 表示成功删除了1个

        //HSET key field value 	将哈希表 key 中的字段 field 的值设为 value
        jedis.hset("myhash", "city", "Nanjing");
        jedis.hset("myhash", "province", "JiangSu");
        Map<String, String> myhash = jedis.hgetAll("myhash");
        System.err.println(myhash);//{province=JiangSu, city=Nanjing}

        //获取所有key
        Set<String> keys = jedis.keys("*");
        keys.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.err.println(s);//myhash
            }
        });


        //3.关闭连接
        jedis.close();
    }

}
